<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    * {
      padding: 0;
      margin: 0;
    }
    .container {
      width: 100vw;
      height: 100vh;
      background: url(../src/assets/images/verifyCode/);
    }
    .box {
      position: fixed;
      width: 1920px;
      height: 1080px;
      background-color: red;
      transform-origin: left top;
      left: 50%;
      top: 50%;
    }
    .top {
      width: 100px;
      height: 100px;
      background-color: pink;
      margin-left: 50px;
    }
    .bottom {
      width: 100px;
      height: 100px;
      background-color: blue;
      margin-left: 50px;
      margin-top: 50px;
    }
  </style>
</head>
<body>
  <div class="container">
    <!-- scale是以父元素的中心点为原点进行放大缩小，但这样会产生问题，元素放大会移动到视窗外部 -->
    <!-- 解决方案是将原点设置为设备视窗的中心 -->
    <!-- 数据展示区域 -->
    <div class="box">
      <div class="top">大大</div>
      <div class="bottom">小小</div>
    </div>
  </div>
</body>
</html>
<script>
  // 控制数据大屏放大与缩小
  let box = document.querySelector('.box')
  box.style.transform = `scale(${getScale()}) translate(-50%, -50%)`

  // 计算缩放的比例
  function getScale(w=1920, h=1080) {
    const ww = window.innerWidth / w
    const wh = window.innerHeight / h

    return ww < wh ? ww : wh
  }
  // 如何得到适合的比例看宽高谁的比例变化小，只有比例变化小的，另一边按等比缩放才不会超出屏幕

  window.onresize = () => {
    box.style.transform = `scale(${getScale()}) translate(-50%, -50%)`
  }
</script>